Gradle如何声明所需的依赖以及依赖的分类(分组)

最近项目在采用android studio来开发,它采用的是Gradle构建系统,当我们要添加外部依赖的时候我们只需要在build.gradle下配置如下即可

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.2'
}

但是这是什么意思呢?于是就去学习了一下granle的依赖管理,原来定义外部依赖包含group, name和version这三个属性,上面的写法是一种简洁的写法,把它补全就是

dependencies {
    compile group:'com.android.support',name:'support-v4',version:'21.0.2'    }

依赖管理简介

在配置完项目仓库后,我们可以声明其中的依赖,如果我们想要声明一个新的依赖,可以采用如下步骤:

指定依赖的配置。
声明所需的依赖。
让我们看一下详细步骤:

配置中的依赖分类

在Gradle中,依赖是按照指定名称进行分类的,这些分类被称为配置项,我们可以使用配置项声明项目的外部依赖。

Java插件指定了若干依赖配置项,其描述如下:当项目的源代码被编译时,

compile配置项中的依赖是必须的。

runtime配置项中包含的依赖在运行时是必须的。

testCompile配置项中包含的依赖在编译项目的测试代码时是必须的。

testRuntime配置项中包含的依赖在运行测试代码时是必须的。

archives配置项中包含项目生成的文件(如Jar文件)。

default配置项中包含运行时必须的依赖。

声明项目依赖

最普遍的依赖称为外部依赖,这些依赖存放在外部仓库中。一个外部依赖可以由以下属性指定:

group属性指定依赖的分组(在Maven中,就是groupId)。

name属性指定依赖的名称(在Maven中,就是artifactId)。

vertion属性指定外部依赖的版本(在Maven中,就是version)。

我们假设我们需要指定以下依赖:

依赖的分组是foo。

依赖的名称是foo。

依赖的版本是0.1。

在项目编译时需要这些依赖。我们可以将以下代码片段加入到build.gradle中,进行依赖声明:

dependencies {
    compile group: 'foo', name: 'foo', version: '0.1'
}

我们也可以采用一种快捷方式声明依赖:[group]:[name]:[version]。如果我们想用这种方式,我们可以将以下代码段加入到build.gradle中:

dependencies {
    compile 'foo:foo:0.1'
}

我们也可以在同一个配置项中加入多个依赖,传统的方式如下:

dependencies {
    compile (
        [group: 'foo', name: 'foo', version: '0.1'],
        [group: 'bar', name: 'bar', version: '0.1']
    )
}

如果采用快捷方式,那可以是这样:

dependencies {
    compile 'foo:foo:0.1', 'bar:bar:0.1'
}

自然地,声明属于不同配置项的依赖也是可以的。比如说,如果我们想要声明属于compile和testCompile配置项的依赖,可以这么做:

dependencies {
    compile group: 'foo', name: 'foo', version: '0.1'
    testCompile group: 'test', name: 'test', version: '0.1'
}

同样的,给力的快捷方式又来了

dependencies {
    compile 'foo:foo:0.1'
    testCompile 'test:test:0.1'
}